﻿/*package export.hero
{
	import base.BaseAddEffect;
	import base.BaseBitmapDataClip;
	import base.BaseBitmapDataPool;
	import base.BaseBullet;
	import base.BaseHero;
	import base.BaseObject;
	
	import com.greensock.TweenMax;
	
	import com.game.event.GameEvent;
	
	import export.RoleInfo;
	import export.bullet.FollowBaseObjectBullet;
	import export.bullet.SpecialEffectBullet;
	import export.monster.VoodooDoll;
	
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.geom.ColorTransform;
	import flash.geom.Point;
	import flash.utils.Dictionary;
	import flash.utils.getTimer;
	
	import com.game.manager.SoundManager;
	
	import com.game.view.component.AccumulatePowerBar;
	import com.game.engine.MainGame;
	
	public class Role4 extends BaseHero
	{
		
		public function Role4()
		{
			this.hit12Dict = new Dictionary();
			super();
			roleName = "沙僧";
			userType = "沙僧";
			this.horizenSpeed = 6;
			this.attackBackInfoDict["hit1"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [2, -3],
				"attackInterval" : 999,
				"attackKind"     : "physics",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit1Arrow"] = {
				"hitMaxCount"    : 1,
				"attackBackSpeed": [0.5, -3],
				"attackInterval" : 999,
				"attackKind"     : "physics",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit2"] = {
				"hitMaxCount"    : 20,
				"attackBackSpeed": [0.5, -3],
				"attackInterval" : 999,
				"attackKind"     : "physics",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit2Arrow"] = {
				"hitMaxCount"    : 20,
				"attackBackSpeed": [0.5, -3],
				"attackInterval" : 5,
				"attackKind"     : "physics",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit3"] = {
				"hitMaxCount"    : 20,
				"attackBackSpeed": [0.5, -3],
				"attackInterval" : 7,
				"attackKind"     : "physics",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit4"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-5, -3],
				"attackInterval" : 12,
				"attackKind"     : "magic",
				"addEffect"      : [{
					"name" : BaseAddEffect.POISON,
					"time" : (gc.frameClips * 8),
					"power": 1
				}, {
					"name": BaseAddEffect.POISON_TIMES,
					"time": (gc.frameClips * 8)
				}],
				"addprotection"  : 2.5
			};
			this.attackBackInfoDict["hit4Arrow"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [-5, -3],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addEffect"      : [{
					"name" : BaseAddEffect.POISON,
					"time" : (gc.frameClips * 5),
					"power": 1
				}, {
					"name": BaseAddEffect.POISON_TIMES,
					"time": (gc.frameClips * 5)
				}],
				"addprotection"  : 5
			};
			this.attackBackInfoDict["hit4ArrowPro"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [-15, -3],
				"attackInterval" : 999,
				"attackKind"     : "physics",
				"addprotection"  : 20
			};
			this.attackBackInfoDict["hit5"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [0, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 0
			};
			this.attackBackInfoDict["hit6"] = {
				"hitMaxCount"    : 1,
				"attackBackSpeed": [0, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 0
			};
			this.attackBackInfoDict["hit7"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [0, -2],
				"attackInterval" : 36,
				"attackKind"     : "magic",
				"addEffect"      : [{
					"name" : BaseAddEffect.POISON,
					"time" : (gc.frameClips * 5),
					"power": 1
				}, {
					"name": BaseAddEffect.POISON_TIMES,
					"time": (gc.frameClips * 5)
				}],
				"addprotection"  : 2.5
			};
			this.attackBackInfoDict["hit8"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-30, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 4
			};
			this.attackBackInfoDict["hit8Arrow"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-30, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 4
			};
			this.attackBackInfoDict["hit9"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-15, -25],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 3.5
			};
			this.attackBackInfoDict["hit9Arrow"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-5, 0],
				"attackInterval" : 4,
				"attackKind"     : "magic",
				"addprotection"  : 2
			};
			this.attackBackInfoDict["hit10"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-10, -2],
				"attackInterval" : 8,
				"attackKind"     : "magic",
				"addprotection"  : 1
			};
			this.attackBackInfoDict["hit10Arrow"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [-10, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addprotection"  : 4
			};
			this.attackBackInfoDict["hit11"] = {
				"hitMaxCount"    : 100,
				"attackBackSpeed": [0, 0],
				"attackInterval" : 7,
				"attackKind"     : "magic",
				"addprotection"  : 0
			};
			this.attackBackInfoDict["hit12"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [-5, -2],
				"attackInterval" : 20,
				"attackKind"     : "physics",
				"addprotection"  : 5
			};
			this.attackBackInfoDict["hit12Arrow"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [-1, 0],
				"attackInterval" : 10,
				"attackKind"     : "magic",
				"addprotection"  : 0.8
			};
			this.exceedPowerSprite = new AccumulatePowerBar(this.colipse.width, 9, this.hit4ArrowProNeedCount);
			this.exceedPowerSprite.name = "exceedPow";
			this.exceedPowerSprite.x = (this.x - (this.colipse.width / 2));
			this.exceedPowerSprite.y = ((this.y - (this.colipse.height / 2)) - 20);
			this.addChild(this.exceedPowerSprite);
			nameTextField.y = ((-(this.colipse.height) / 2) - 30);
			nameTextField.x = ((-(this.colipse.width) / 2) - 30);
			nameTextField.selectable = false;
			nameTextField.autoSize = "center";
			nameTextField.cacheAsBitmap = true;
			this.addChild(nameTextField);
			this.hit11BiaojiCount = (gc.frameClips * 10);
		}
		
		private var hit11Biaoji:SpecialEffectBullet;
		private var hit11BiaojiCount:uint;
		private var curHit11BiaojiCount:uint = 0;
		private var role4Hit5:VoodooDoll;
		private var isNotArrow:Boolean = true;
		private var hit12Dict:Dictionary;
		private var hit4ArrowProCurrentCount:int = 0;
		private var hit4ArrowProNeedCount:int = 20;
		
		override public function initPopertits():void
		{
			super.initPopertits();
			this.attackBackInfoDict["hit7"] = {
				"hitMaxCount"    : 999,
				"attackBackSpeed": [0, -2],
				"attackInterval" : 999,
				"attackKind"     : "magic",
				"addEffect"      : [{
					"name" : BaseAddEffect.POISON,
					"time" : (gc.frameClips * 4),
					"power": (0.5 * this.getAtk())
				}, {
					"name": BaseAddEffect.POISON_TIMES,
					"time": (gc.frameClips * 8)
				}]
			};
		}
		
		override protected function initBBDC():void
		{
			var _loc1_:* = null;
			var _loc2_:*;
			var _loc3_:* = null;
			var _loc4_:* = null;
			var _loc5_:uint = this.getCurClothId();
			var _loc6_:uint = this.getCurWeaponId();
			if (!(_loc6_ == 4 || _loc6_ == 5 || _loc6_ == 9 || _loc6_ == 998))
			{
				this.isNotArrow = true;
				_loc1_ = BaseBitmapDataPool.getBitmapDataArrayByName(("ROLE4_SHOVEL_" + _loc5_));
			}
			else
			{
				this.isNotArrow = false;
				_loc1_ = BaseBitmapDataPool.getBitmapDataArrayByName(("ROLE4_ARROW_" + _loc5_));
			}
			_loc2_ = BaseBitmapDataPool.getBitmapDataArrayByName(("ROLE4_EQUIP_" + _loc6_));
			if (_loc1_ && _loc2_)
			{
				if (bbdc)
				{
					this.bbdc.replaceBitmapDataByName("body", _loc1_);
					this.bbdc.replaceBitmapDataByName("equip", _loc2_);
					if (this.isNotArrow)
					{
						bbdc.setFrameStopCount([
							[2, 2, 2, 3, 2, 4],
							[2, 2, 2, 13, 2, 24],
							[4, 4, 4, 4],
							[2, 2, 2, 2],
							[1, 1, 15, 6, 10, 4],
							[2, 2, 2, 2, 2],
							[2, 2, 6],
							[2, 2, 11],
							[1, 1, 1, 2],
							[2, 19],
							[2, 2, 30],
							[2, 2, 2, 15],
							[2, 2, 16],
							[2, 2, 14]
						]);
						bbdc.setFrameCount([36, 6, 4, 4, [1, 1, 1, 1, 1, 1], 5, 3, 3, 12, 2, 3, 4, 3, 3]);
					}
					else
					{
						bbdc.setFrameStopCount([
							[2, 2, 2, 3, 2, 4],
							[2, 2, 2, 13, 2, 24],
							[4, 4, 4, 4],
							[2, 2, 2, 2],
							[1, 1, 15, 10, 20, 4],
							[2, 2, 2, 2, 2],
							[2, 2, 1, 1, 12],
							[2, 2, 2, 2, 2, 10],
							[2, 4, 1, 1, 10],
							[2, 2, 30],
							[2, 2, 1, 1, 12],
							[2, 2, 2, 2, 2, 20],
							[2, 7, 1, 1, 25],
							[2, 18, 2, 2, 2, 24]
						]);
						bbdc.setFrameCount([36, 6, 4, 4, [1, 1, 1, 1, 1, 1], 5, 5, 6, 5, 3, 5, 6, 5, 6]);
					}
				}
				else
				{
					_loc3_ = {
						"name"  : "body",
						"source": _loc1_
					};
					_loc4_ = {
						"name"  : "equip",
						"source": _loc2_
					};
					bbdc = new BaseBitmapDataClip([_loc3_, _loc4_], 200, 200, new Point(0, 0));
					bbdc.setOffsetXY(15, -13);
					if (this.isNotArrow)
					{
						bbdc.setFrameStopCount([
							[2, 2, 2, 3, 2, 4],
							[2, 2, 2, 13, 2, 24],
							[4, 4, 4, 4],
							[2, 2, 2, 2],
							[1, 1, 8, 6, 10, 4],
							[2, 2, 2, 2, 2],
							[2, 2, 6],
							[2, 2, 11],
							[1, 1, 1, 2],
							[2, 19],
							[2, 2, 30],
							[2, 2, 2, 15],
							[2, 2, 16],
							[2, 2, 14]
						]);
						bbdc.setFrameCount([36, 6, 4, 4, [1, 1, 1, 1, 1, 1], 5, 3, 3, 12, 2, 3, 4, 3, 3]);
					}
					else
					{
						bbdc.setFrameStopCount([
							[2, 2, 2, 3, 2, 4],
							[2, 2, 2, 13, 2, 24],
							[4, 4, 4, 4],
							[2, 2, 2, 2],
							[1, 1, 8, 10, 20, 4],
							[2, 2, 2, 2, 2],
							[2, 2, 1, 1, 12],
							[2, 2, 2, 2, 2, 10],
							[2, 4, 1, 1, 10],
							[2, 2, 30],
							[2, 2, 1, 1, 12],
							[2, 2, 2, 2, 2, 20],
							[2, 7, 1, 1, 25],
							[2, 18, 2, 2, 2, 24]
						]);
						bbdc.setFrameCount([36, 6, 4, 4, [1, 1, 1, 1, 1, 1], 5, 5, 6, 5, 3, 5, 6, 5, 6]);
					}
					bbdc.setEnterFrameCallBack(this.enterFrameFunc, this.exitFrameFunc);
					bbdc.setAddScriptWhenFrameOver(this.scriptFrameOverFunc);
					this.body.addChild(bbdc);
					this.bbdc.turnRight();
				}
				return;
			}
			throw (new Error("ROLE4--BitmapData Error!"));
		}
		
		override protected function newColipse():void
		{
			this.colipse = (AUtils.getNewObj("ObjectBaseSprite") as Sprite);
			this.colipse.visible = false;
			this.addChild(this.colipse);
		}
		
		override public function setAction(param1:String):void
		{
			super.setAction(param1);
			var _loc2_:Point = this.bbdc.getCurPoint();
			switch (param1)
			{
				case "idle":
					if (_loc2_.y != 0)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(0);
					}
					this.bbdc.setState(param1);
					return;
				case "idle2":
					if (_loc2_.y != 1)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(1);
					}
					this.bbdc.setState(param1);
					return;
				case "walk":
					if (_loc2_.y != 2)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(2);
					}
					this.bbdc.setState(param1);
					return;
				case "run":
					if (_loc2_.y != 3)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(3);
					}
					this.bbdc.setState(param1);
					return;
				case "jump1":
					if (((!(_loc2_.x == 0)) || (!(_loc2_.y == 4))))
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(4);
					}
					this.bbdc.setState(param1);
					return;
				case "jump2":
					if (_loc2_.y != 5)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(5);
					}
					this.bbdc.setState(param1);
					return;
				case "jump3":
					if (((!(_loc2_.x == 1)) || (!(_loc2_.y == 4))))
					{
						this.bbdc.setFramePointX(1);
						this.bbdc.setFramePointY(4);
					}
					this.bbdc.setState(param1);
					return;
				case "hit1":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 6)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(6);
						}
					}
					else
					{
						if (_loc2_.y != 6)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(6);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit2":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 7)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(7);
						}
					}
					else
					{
						if (_loc2_.y != 6)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(6);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit3":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 8)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(8);
						}
					}
					else
					{
						if (_loc2_.y != 7)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(7);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit4":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 9)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(9);
						}
					}
					else
					{
						if (_loc2_.y != 8)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(8);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit5":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 9)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(9);
						}
					}
					else
					{
						if (((!(_loc2_.x == 4)) || (!(_loc2_.y == 4))))
						{
							this.bbdc.setFramePointX(4);
							this.bbdc.setFramePointY(4);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit6":
					if (this.isNotArrow)
					{
						if (((!(_loc2_.x == 4)) || (!(_loc2_.y == 4))))
						{
							this.bbdc.setFramePointX(4);
							this.bbdc.setFramePointY(4);
						}
					}
					else
					{
						if (((!(_loc2_.x == 3)) || (!(_loc2_.y == 4))))
						{
							this.bbdc.setFramePointX(3);
							this.bbdc.setFramePointY(4);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit7":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 10)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(10);
						}
					}
					else
					{
						if (_loc2_.y != 9)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(9);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit8":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 11)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(11);
						}
					}
					else
					{
						if (_loc2_.y != 10)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(10);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit9":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 12)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(12);
						}
					}
					else
					{
						if (_loc2_.y != 11)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(11);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit10":
					if (this.isNotArrow)
					{
						if (_loc2_.y != 10)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(10);
						}
					}
					else
					{
						if (_loc2_.y != 12)
						{
							this.bbdc.setFramePointX(0);
							this.bbdc.setFramePointY(12);
						}
					}
					this.bbdc.setState(param1);
					return;
				case "hit11":
					if (((!(_loc2_.x == 5)) || (!(_loc2_.y == 4))))
					{
						this.bbdc.setFramePointX(5);
						this.bbdc.setFramePointY(4);
					}
					this.bbdc.setState(param1);
					return;
				case "hit12":
					if (_loc2_.y != 13)
					{
						this.bbdc.setFramePointX(0);
						this.bbdc.setFramePointY(13);
					}
					this.bbdc.setState(param1);
					return;
				case "hurt":
					if (((!(_loc2_.x == 2)) || (!(_loc2_.y == 4))))
					{
						this.bbdc.setFramePointX(2);
						this.bbdc.setFramePointY(4);
					}
					this.bbdc.setState(param1);
			}
		}
		
		override protected function scriptFrameOverFunc(param1:int):void
		{
			var _loc2_:String = this.bbdc.getState();
			switch (_loc2_)
			{
				case "idle":
					this.setAction("idle2");
					return;
				case "idle2":
					this.setAction("idle");
					return;
				case "walk":
					this.bbdc.setFramePointX(0);
					return;
				case "run":
					this.bbdc.setFramePointX(0);
					return;
				case "jump1":
					this.bbdc.setFramePointX(0);
					return;
				case "jump2":
					this.setAction("jump3");
					return;
				case "jump3":
					this.bbdc.setFramePointX(1);
					return;
				case "hit1":
					this.setAction("idle");
					return;
				case "hit2":
					this.setAction("idle");
					return;
				case "hit3":
					this.setStatic();
					this.setAction("idle");
					return;
				case "hit4":
					this.setAction("idle");
					return;
				case "hit5":
					this.setAction("idle");
					return;
				case "hit6":
					this.setAction("idle");
					return;
				case "hit7":
					this.setAction("idle");
					return;
				case "hit8":
					this.setAction("idle");
					return;
				case "hit9":
					this.speed.y = 0;
					this.setAction("idle");
					return;
				case "hit10":
					this.setStatic();
					this.setAction("idle");
					return;
				case "hit11":
					this.setAction("idle");
					return;
				case "hit11Frame2":
					this.setAction("idle");
					return;
				case "hit12":
					this.lastHit = "";
					this.getBBDC().show();
					this.setAction("idle");
					return;
				case "hurt":
					this.setStatic();
					this.setAction("idle");
			}
		}
		
		override protected function enterFrameFunc(param1:Point):void
		{
			var _loc2_:* = null;
			var _loc3_:* = NaN;
			var _loc4_:Number = NaN;
			var _loc5_:* = null;
			var _loc6_:* = null;
			var _loc7_:String = this.bbdc.getState();
			var _loc8_:Point = new Point();
			var _loc9_:int;
			switch (_loc7_)
			{
				case "hit1":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 2)
							{
								if (param1.x == 1)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 20);
									}
									else
									{
										_loc8_.x = (this.x + 20);
									}
									_loc8_.y = (this.y + 30);
									this.doHit1(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (param1.x == 1)
					{
						if (this.getPlayer().findSkillIsInTheSkillAry("zq"))
						{
							_loc9_ = 5 * gc.needMMP[6][0][(this.player.returnSkillLevelBySkillName("zq") - 1)];
							if (this.roleProperties.mp >= _loc9_ && this.keyarray[1] == 1)
							{
								this.hit4ArrowProCurrentCount++;
								this.bbdc.resetCurFrameStopCount();
							}
						}
					}
					if (this.bbdc.getCurFrameCount() == 1)
					{
						if (param1.x == 2)
						{
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = (this.x - 90);
							}
							else
							{
								_loc8_.x = (this.x + 90);
							}
							_loc8_.y = this.y;
							_loc9_ = 20 * gc.needMMP[6][0][(this.player.returnSkillLevelBySkillName("zq") - 1)];
							if (this.hit4ArrowProCurrentCount > this.hit4ArrowProNeedCount)
							{
								this.doHit4ArrowPro(this.getBBDC().getDirect(), _loc8_);
								this.roleProperties.setMMP(this.roleProperties.mp - _loc9_);
							}
							else if (this.hit4ArrowProCurrentCount > this.hit4ArrowProNeedCount * 0.5)
							{
								this.doHit4Arrow(this.getBBDC().getDirect(), _loc8_);
								this.roleProperties.setMMP(this.roleProperties.mp - _loc9_);
							}
							else
							{
								this.doHit1Arrow(this.getBBDC().getDirect(), _loc8_);
							}
							this.hit4ArrowProCurrentCount = 0;
							return;
						}
						return;
					}
					return;
				case "hit2":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 2)
							{
								if (param1.x == 1)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 15);
									}
									else
									{
										_loc8_.x = (this.x + 15);
									}
									_loc8_.y = this.y;
									this.doHit2(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (param1.x == 1)
					{
						if (this.getPlayer().findSkillIsInTheSkillAry("zq"))
						{
							_loc9_ = 5 * gc.needMMP[6][0][(this.player.returnSkillLevelBySkillName("zq") - 1)];
							if (this.roleProperties.mp >= _loc9_ && this.keyarray[1] == 1)
							{
								this.hit4ArrowProCurrentCount++;
								this.bbdc.resetCurFrameStopCount();
							}
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 1)
						{
							if (param1.x == 2)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 90);
								}
								else
								{
									_loc8_.x = (this.x + 90);
								}
								_loc8_.y = this.y;
								_loc9_ = 20 * gc.needMMP[6][0][(this.player.returnSkillLevelBySkillName("zq") - 1)];
								if (this.hit4ArrowProCurrentCount > this.hit4ArrowProNeedCount)
								{
									this.doHit4ArrowPro(this.getBBDC().getDirect(), _loc8_);
									this.roleProperties.setMMP(this.roleProperties.mp - _loc9_);
								}
								else if (this.hit4ArrowProCurrentCount > this.hit4ArrowProNeedCount * 0.5)
								{
									this.doHit4Arrow(this.getBBDC().getDirect(), _loc8_);
									this.roleProperties.setMMP(this.roleProperties.mp - _loc9_);
								}
								else
								{
									this.doHit1Arrow(this.getBBDC().getDirect(), _loc8_);
								}
								this.hit4ArrowProCurrentCount = 0;
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit3":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 1)
							{
								if (param1.x == 0)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = this.x;
									}
									else
									{
										_loc8_.x = this.x;
									}
									_loc8_.y = this.y;
									this.doHit3(this.getBBDC().getDirect(), _loc8_);
								}
							}
						}
						if (this.getBBDC().getDirect() == 0)
						{
							this.speed.x = -8;
							return;
						}
						this.speed.x = 8;
						return;
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 2)
						{
							if (param1.x == 1)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 115);
								}
								else
								{
									_loc8_.x = (this.x + 115);
								}
								_loc8_.y = (this.y - 20);
								this.doHit2Arrow(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit4":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 19)
							{
								if (param1.x == 1)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 245);
									}
									else
									{
										_loc8_.x = (this.x + 245);
									}
									_loc8_.y = (this.y - 110);
									this.doHit4(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 1)
						{
							if (param1.x == 2)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 30);
								}
								else
								{
									_loc8_.x = (this.x + 30);
								}
								_loc8_.y = this.y;
								this.doHit4Arrow(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit5":
					if (this.isNotArrow)
					{
						if (this.bbdc.getCurFrameCount() == 19)
						{
							if (param1.x == 1)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 115);
								}
								else
								{
									_loc8_.x = (this.x + 115);
								}
								_loc8_.y = (this.y - 110);
								this.doHit5_1(this.getBBDC().getDirect(), _loc8_);
							}
						}
					}
					else
					{
						if (this.bbdc.getCurFrameCount() == 20)
						{
							if (param1.x == 4)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 115);
								}
								else
								{
									_loc8_.x = (this.x + 115);
								}
								_loc8_.y = (this.y - 110);
								this.doHit5_1(this.getBBDC().getDirect(), _loc8_);
							}
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 14)
						{
							if (((param1.x == 1) || (param1.x == 4)))
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = this.x;
								}
								else
								{
									_loc8_.x = this.x;
								}
								_loc8_.y = (this.y - 20);
								_loc3_ = 9999;
								for each (_loc5_ in gc.oppositeArray)
								{
									if (this.getBBDC().getDirect() == 0)
									{
										if (this.x > _loc5_.x)
										{
											_loc4_ = AUtils.GetDisBetweenTwoObj(this, _loc5_);
											if (_loc3_ > _loc4_)
											{
												_loc3_ = Number(_loc4_);
												_loc2_ = _loc5_;
											}
										}
									}
									else
									{
										if (this.x < _loc5_.x)
										{
											_loc4_ = AUtils.GetDisBetweenTwoObj(this, _loc5_);
											if (_loc3_ > _loc4_)
											{
												_loc3_ = Number(_loc4_);
												_loc2_ = _loc5_;
											}
										}
									}
								}
								if (_loc2_)
								{
									this.doHit5_2(this.getBBDC().getDirect(), _loc8_, _loc2_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit6":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 10)
							{
								if (param1.x == 4)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 25);
									}
									else
									{
										_loc8_.x = (this.x + 25);
									}
									_loc8_.y = (this.y - 30);
									this.doHit6(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 10)
						{
							if (param1.x == 3)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 25);
								}
								else
								{
									_loc8_.x = (this.x + 25);
								}
								_loc8_.y = (this.y - 30);
								this.doHit6(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit7":
					if (this.bbdc.getCurFrameCount() == 20)
					{
						if (param1.x == 2)
						{
							for each (_loc6_ in this.magicBulletArray)
							{
								if (_loc6_.getImcName() == "Role4Bullet7_1")
								{
									_loc6_.destroy();
								}
							}
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = (this.x - 155);
							}
							else
							{
								_loc8_.x = (this.x + 155);
							}
							_loc8_.y = (this.y - 50);
							this.doHit7_1(this.getBBDC().getDirect(), _loc8_);
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 8)
						{
							if (param1.x == 2)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 150);
								}
								else
								{
									_loc8_.x = (this.x + 150);
								}
								_loc8_.y = (this.y - 70);
								this.doHit7_2(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit8":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 2)
							{
								if (param1.x == 2)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 125);
									}
									else
									{
										_loc8_.x = (this.x + 125);
									}
									_loc8_.y = (this.y - 30);
									this.doHit8(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (this.bbdc.getCurFrameCount() == 2)
					{
						if (param1.x == 0)
						{
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = (this.x - 75);
							}
							else
							{
								_loc8_.x = (this.x + 75);
							}
							_loc8_.y = (this.y - 60);
							this.doHit8Arrow_1(this.getBBDC().getDirect(), _loc8_);
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 2)
						{
							if (param1.x == 0)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 65);
								}
								else
								{
									_loc8_.x = (this.x + 65);
								}
								_loc8_.y = (this.y - 10);
								this.doHit8Arrow_2(this.getBBDC().getDirect(), _loc8_);
							}
						}
					}
					if (param1.x == 0)
					{
						if (this.bbdc.getDirect() == 0)
						{
							this.isRight = true;
							this.isLeft = false;
							this.speed.x = 25;
							this.speed.y = -25;
							return;
						}
						this.isLeft = true;
						this.isRight = false;
						this.speed.x = -25;
						this.speed.y = -25;
						return;
					}
					this.setStatic();
					this.speed.y = 0;
					return;
				case "hit9":
					if (this.isNotArrow)
					{
						if (this.bbdc.getCurFrameCount() == 2)
						{
							if (param1.x == 0)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = this.x;
								}
								else
								{
									_loc8_.x = this.x;
								}
								_loc8_.y = this.y;
								this.doHit9_1(this.getBBDC().getDirect(), _loc8_);
							}
						}
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 13)
							{
								if (param1.x == 2)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = this.x;
									}
									else
									{
										_loc8_.x = this.x;
									}
									_loc8_.y = (this.y - 80);
									this.doHit9_2(this.getBBDC().getDirect(), _loc8_);
								}
							}
						}
						if (param1.x == 2)
						{
							this.speed.y = -10;
							return;
						}
						return;
					}
					if (this.bbdc.getCurFrameCount() == 2)
					{
						if (param1.x == 0)
						{
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = (this.x - 80);
							}
							else
							{
								_loc8_.x = (this.x + 80);
							}
							_loc8_.y = (this.y - 80);
							this.doHit9Arrow_1(this.getBBDC().getDirect(), _loc8_);
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 2)
						{
							if (param1.x == 1)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 60);
								}
								else
								{
									_loc8_.x = (this.x + 60);
								}
								_loc8_.y = (this.y + 30);
								this.doHit9Arrow_2(this.getBBDC().getDirect(), _loc8_);
							}
						}
					}
					if (param1.x <= 1)
					{
						this.speed.y = -35;
					}
					else
					{
						this.speed.y = 0;
					}
					this.setStatic();
					return;
				case "hit10":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 2)
							{
								if (param1.x == 0)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 150);
									}
									else
									{
										_loc8_.x = (this.x + 150);
									}
									_loc8_.y = (this.y - 50);
									this.doHit10(this.getBBDC().getDirect(), _loc8_);
								}
							}
						}
						if (param1.x < 2)
						{
							if (this.getBBDC().getDirect() == 0)
							{
								this.speed.x = -20;
								return;
							}
							this.speed.x = 20;
							return;
						}
						this.setStatic();
						return;
					}
					if (this.bbdc.getCurFrameCount() == 2)
					{
						if (param1.x == 0)
						{
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = this.x;
							}
							else
							{
								_loc8_.x = this.x;
							}
							_loc8_.y = this.y;
							this.doHit10Arrow_1(this.getBBDC().getDirect(), _loc8_);
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 24)
						{
							if (param1.x == 4)
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = (this.x - 225);
								}
								else
								{
									_loc8_.x = (this.x + 225);
								}
								_loc8_.y = (this.y - 80);
								this.doHit10Arrow_2(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit11":
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 4)
						{
							if (param1.x == 5)
							{
								_loc8_.x = this.x;
								_loc8_.y = this.y;
								this.doHit11(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
				case "hit12":
					if (this.isNotArrow)
					{
						if (((gc.sid == this.sid) || (gc.isSingleGame())))
						{
							if (this.bbdc.getCurFrameCount() == 14)
							{
								if (param1.x == 2)
								{
									if (this.bbdc.getDirect() == 0)
									{
										_loc8_.x = (this.x - 150);
									}
									else
									{
										_loc8_.x = (this.x + 150);
									}
									_loc8_.y = this.y;
									this.doHit12(this.getBBDC().getDirect(), _loc8_);
									return;
								}
								return;
							}
							return;
						}
						return;
					}
					if (((param1.x == 0) || ((param1.x == 1) && (this.bbdc.getCurFrameCount() >= 16))))
					{
						this.setStatic();
						this.speed.y = -25;
					}
					else
					{
						if (((param1.x >= 2) && (param1.x <= 3)))
						{
							if (this.bbdc.getDirect() == 0)
							{
								this.speed.x = -25;
							}
							else
							{
								this.speed.x = 25;
							}
							this.speed.y = 0;
						}
						else
						{
							if (((param1.x == 4) && (this.bbdc.getCurFrameCount() == 2)))
							{
								if (this.bbdc.getDirect() == 0)
								{
									this.isRight = true;
									this.isLeft = false;
									this.bbdc.turnRight();
								}
								else
								{
									this.isRight = false;
									this.isLeft = true;
									this.bbdc.turnLeft();
								}
							}
							else
							{
								this.setStatic();
								this.speed.y = 0;
							}
						}
					}
					if (this.bbdc.getCurFrameCount() == 2)
					{
						if (((param1.x == 0) || (param1.x == 4)))
						{
							if (this.bbdc.getDirect() == 0)
							{
								_loc8_.x = (this.x - 80);
							}
							else
							{
								_loc8_.x = (this.x + 80);
							}
							_loc8_.y = (this.y - 100);
							this.doHit12Arrow_1(this.getBBDC().getDirect(), _loc8_);
						}
					}
					if (((gc.sid == this.sid) || (gc.isSingleGame())))
					{
						if (this.bbdc.getCurFrameCount() == 2)
						{
							if (((param1.x == 0) || (param1.x == 4)))
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = this.x;
								}
								else
								{
									_loc8_.x = this.x;
								}
								_loc8_.y = this.y;
								this.doHit12Arrow_2(this.getBBDC().getDirect(), _loc8_);
							}
						}
						if ((((this.bbdc.getCurFrameCount() == 17) || (this.bbdc.getCurFrameCount() == 12)) || (this.bbdc.getCurFrameCount() == 6)))
						{
							if (((param1.x == 1) || (param1.x == 5)))
							{
								if (this.bbdc.getDirect() == 0)
								{
									_loc8_.x = this.x;
								}
								else
								{
									_loc8_.x = this.x;
								}
								_loc8_.y = (this.y - (-7 + (this.bbdc.getCurFrameCount() * 2)));
								this.doHit12Arrow_3(this.getBBDC().getDirect(), _loc8_);
								return;
							}
							return;
						}
						return;
					}
					return;
			}
		}
		
		override protected function exitFrameFunc(param1:Point):void
		{
		}
		
		override public function step():void
		{
			super.step();
			if (this.hit4ArrowProCurrentCount > 0)
			{
				this.exceedPowerSprite.step(this.hit4ArrowProCurrentCount);
			}
			if (this.hit4ArrowProCurrentCount == 0)
			{
				this.exceedPowerSprite.clear();
			}
			if (this.hit11Biaoji)
			{
				if (this.curHit11BiaojiCount < this.hit11BiaojiCount)
				{
					this.curHit11BiaojiCount++;
				}
				if (this.curHit11BiaojiCount == this.hit11BiaojiCount)
				{
					this.hit11Biaoji.destroy();
					this.hit11Biaoji = null;
				}
			}
		}
		
		override public function reduceHp(param1:int, param2:Boolean = false):void
		{
			if (this.isGXP || this.curAction == "hit12")
			{
				param2 = false;
			}
			if ((this.curAction == "hit1" || this.curAction == "hit2") && this.hit4ArrowProCurrentCount > 0)
			{
				param1 *= 1.5;
				param2 = false;
			}
			super.reduceHp(param1, param2);
		}
		
		override public function setAttackBack(param1:Point):void
		{
			if (!((this.isGXP) || (this.curAction == "hit12")))
			{
				super.setAttackBack(param1);
			}
		}
		
		override protected function myKeyDown(param1:String):*
		{
			var keyStr:String = param1;
			super.myKeyDown(keyStr);
			if (canNextAction)
			{
				switch (keyStr)
				{
					case "0010":
						if (((this.isAttacking()) || (this.isBeAttacking())))
						{
							return;
						}
						this.jump();
						canNextAction = false;
						return;
					case "0100":
					case "1100":
						if (((this.isAttacking()) || (this.isBeAttacking())))
						{
							return;
						}
						this.normalHit();
						canNextAction = false;
						return;
					case "1010":
						if (((this.isAttacking()) || (this.isBeAttacking())))
						{
							return;
						}
						this.getFallDown();
						canNextAction = false;
						return;
					case "0110":
						if (((this.isAttacking()) || (this.isBeAttacking())))
						{
							return;
						}
						canNextAction = false;
						return;
					case "0001":
						if (this.checkTransferDoor())
						{
							gc.pWorld.getBaseLevelListener().keyBoardDownForW(this);
							if (((gc.curStage == 8) && (gc.curLevel == 1)))
							{
								return;
							}
						}
						if (!MainGame.getIns().battleData.levelCleared && this.checkTransferDoor())
						{
							MainGame.getIns().battleData.levelCleared = true;
							gc.keyboardControl.destroy();
							TweenMax.to(gc.gameInfo, 1, {
								"alpha": 0
							});
							TweenMax.to(gc.gameScene, 1, {
								"alpha"     : 0,
								"onComplete": function ():*
								{
									EventManager.getIns().dispatchEvent(GameEventType.GAME_VICTOR);
								}
							});
							return;
						}
				}
			}
		}
		
		override protected function showSkill(param1:String):void
		{
			var _loc2_:* = null;
			var _loc3_:* = 0;
			if (this.getPlayer())
			{
				_loc2_ = this.getPlayer().returnSkillNameBySkillKey(param1);
				if (_loc2_)
				{
					param1 = _loc2_[0];
					_loc3_ = uint(parseInt(_loc2_[1]));
					if (param1 == "zq")
					{
						this.skill_zq(_loc3_);
					}
					else
					{
						if (param1 == "mbyj")
						{
							this.skill_mbyj((_loc3_ * 1.671));
						}
						else
						{
							if (param1 == "wdww")
							{
								this.skill_wdww((_loc3_ / 1.342));
							}
							else
							{
								if (param1 == "jdz")
								{
									this.skill_jdz(_loc3_);
								}
								else
								{
									if (param1 == "mds")
									{
										this.skill_mds(_loc3_);
									}
									else
									{
										if (param1 == "qlj")
										{
											this.skill_qlj(_loc3_);
										}
										else
										{
											if (param1 == "tkj")
											{
												this.skill_tkj(_loc3_);
											}
											else
											{
												if (param1 == "dzj")
												{
													this.skill_dcj(_loc3_);
												}
												else
												{
													if (param1 == "lybj")
													{
														this.skill_lvbj(_loc3_);
													}
													else
													{
														if (param1 == "mmw")
														{
															this.skill_mmw(_loc3_);
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
					if (((this.curAddEffect.curDebuff(BaseAddEffect.MONSTER65_AOE)) || (this.curAddEffect.curDebuff(BaseAddEffect.MONSTER129Buff))))
					{
						this.reduceHp(_loc3_);
					}
				}
			}
		}
		
		override protected function showSkillKongGe():void
		{
			var _loc1_:RoleInfo = (gc.gameInfo.getRoleInfoByPlayer(this.player) as RoleInfo);
			if (((_loc1_.isGXPReady()) && (!(this.isGXP))))
			{
				this.turnToGXP();
			}
		}
		
		override public function refreshEquip():void
		{
			this.refreshByWeapon();
			super.refreshEquip();
		}
		
		override public function normalHit():*
		{
			this.curtime = getTimer();
			if (this.timers <= 0)
			{
				if (!this.isInSky())
				{
					if (!this.isRunning() && !this.isAttacking() || this.isNormalHit())
					{
						this.timers = 10;
						if (this.curtime - this.lasttime > 25 * 60)
						{
							this.hitNum = 1;
						}
						else
						{
							if (++this.hitNum > 3)
							{
								this.hitNum = 1;
							}
						}
						this.setAction(("hit" + this.hitNum));
						this.lastHit = ("hit" + this.hitNum);
						if (this.isNotArrow)
						{
							SoundManager.playSound(("Role4_hit" + this.hitNum));
						}
						else
						{
							if (((this.hitNum == 1) || (this.hitNum == 2)))
							{
								SoundManager.playSound("Role4_hit1Arrow");
							}
							else
							{
								SoundManager.playSound("Role4_hit2Arrow");
							}
						}
						
					}
					else
					{
						if (this.isRunning() && !this.isAttacking())
						{
							this.doubleCount = 0;
							this.normalHit();
						}
					}
				}
				else
				{
					this.timers = 15;
					if (this.isNotArrow)
					{
						this.setAction("hit2");
						this.lastHit = "hit2";
						SoundManager.playSound("Role4_hit2");
					}
					else
					{
						this.setAction("hit3");
						this.lastHit = "hit3";
						SoundManager.playSound("Role4_hit2Arrow");
					}
					this.hitNum = 0;
					
				}
			}
			this.lasttime = this.curtime;
		}
		
		override public function isNormalHit():Boolean
		{
			return (((((this.curAction == "hit1") || (this.curAction == "hit2")) || (this.curAction == "hit3")) || (this.curAction == "hit4")) || (this.curAction == "hit5"));
		}
		
		override public function upGrade(param1:Boolean = true):*
		{
			super.upGrade();
			if (!param1)
			{
				this.roleProperties.removeAllEquipAndPassive();
			}
			this.roleProperties.setSHHP((70 + (30 * (this.roleProperties.getLevel() - 1))));
			this.roleProperties.setHHP(this.roleProperties.getSHHP());
			this.roleProperties.setSMMP((70 + (30 * (this.roleProperties.getLevel() - 1))));
			this.roleProperties.setMMP(this.roleProperties.getSMMP());
			this.roleProperties.setBasePower((16 + (4 * (this.roleProperties.getLevel() - 1))));
			this.roleProperties.setDefense((this.roleProperties.getLevel() - 1));
			if (this.roleProperties.getLevel() < 7)
			{
				this.roleProperties.setexp((135 + (10 * (this.roleProperties.getLevel() - 1))));
			}
			else
			{
				if (this.roleProperties.getLevel() < 13)
				{
					this.roleProperties.setexp((625 + (50 * (this.roleProperties.getLevel() - 7))));
				}
				else
				{
					if (this.roleProperties.getLevel() < 19)
					{
						this.roleProperties.setexp((1950 + (100 * (this.roleProperties.getLevel() - 13))));
					}
					else
					{
						this.roleProperties.setexp((5000 + (5000 * (this.roleProperties.getLevel() - 19))));
					}
				}
			}
			this.roleProperties.initAll();
		}
		
		override public function getRealPower(param1:String, param2:Boolean = true):int
		{
			var _loc3_:int;
			var _loc4_:* = null;
			var _loc5_:* = 1;
			var _loc6_:* = null;
			var _loc7_:int = 1;
			var sl:int;
			if (this.isGXP)
			{
				_loc5_ = 1.5;
			}
			var _loc8_:int = 1;
			if (((param2) && (Math.random() <= (this.getCrit() / 100))))
			{
				_loc8_ = 2;
			}
			switch (param1)
			{
				case "hit1":
				case "hit1Arrow":
				case "hit2":
				case "hit2Arrow":
					_loc7_ = (((1.002 * this.getAtk()) * _loc8_) * _loc5_);
					break;
				case "hit3":
					_loc7_ = (((0.501 * this.getAtk()) * _loc8_) * _loc5_);
					break;
				case "hit4":
					sl = this.player.returnSkillLevelBySkillName("zq");
					this.attackBackInfoDict["hit4"]["addEffect"] = [{
						"name" : BaseAddEffect.POISON,
						"time" : (gc.frameClips * 5),
						"power": (5 + (20 * sl))
					}, {
						"name": BaseAddEffect.POISON_TIMES,
						"time": (gc.frameClips * 5)
					}];
					_loc7_ = ((30.664 * Math.pow(Math.E, (0.402 * sl))) + ((((0.586 * Math.pow(Math.E, (0.134 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit4Arrow":
					sl = this.player.returnSkillLevelBySkillName("zq");
					this.attackBackInfoDict["hit4Arrow"]["addEffect"] = [{
						"name" : BaseAddEffect.POISON,
						"time" : (gc.frameClips * 5),
						"power": (5 + (20 * sl) + (this.roleProperties.getSHHP() * 0.01 * sl))
					}, {
						"name": BaseAddEffect.POISON_TIMES,
						"time": (gc.frameClips * 5)
					}];
					_loc7_ = ((22.664 * Math.pow(Math.E, (0.402 * sl))) + ((((1.106 * Math.pow(Math.E, (0.134 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit4ArrowPro":
					sl = this.player.returnSkillLevelBySkillName("zq");
					_loc7_ = 4 * ((22.664 * Math.pow(Math.E, (0.402 * sl))) + ((((1.106 * Math.pow(Math.E, (0.134 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit5":
					_loc7_ = 0;
					break;
				case "hit6":
					_loc7_ = 0;
					break;
				case "hit7":
					sl = this.player.returnSkillLevelBySkillName("jdz");
					this.attackBackInfoDict["hit7"]["addEffect"] = [{
						"name" : BaseAddEffect.POISON,
						"time" : (gc.frameClips * 5),
						"power": (8 + (30 * sl))
					}, {
						"name": BaseAddEffect.POISON_TIMES,
						"time": (gc.frameClips * 5)
					}];
					_loc7_ = ((30.664 * Math.pow(Math.E, (0.402 * sl))) + ((((0.906 * Math.pow(Math.E, (0.124 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit8":
					sl = this.player.returnSkillLevelBySkillName("qlj");
					_loc7_ = ((58.664 * Math.pow(Math.E, (0.402 * sl))) + ((((1.946 * Math.pow(Math.E, (0.137 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit8Arrow":
					sl = this.player.returnSkillLevelBySkillName("qlj");
					_loc7_ = ((58.664 * Math.pow(Math.E, (0.402 * sl))) + ((((1.946 * Math.pow(Math.E, (0.137 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit9":
					sl = this.player.returnSkillLevelBySkillName("tkj");
					_loc7_ = ((49.664 * Math.pow(Math.E, (0.402 * sl))) + ((((2.389 * Math.pow(Math.E, (0.131 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit9Arrow":
					sl = this.player.returnSkillLevelBySkillName("tkj");
					_loc7_ = ((29.664 * Math.pow(Math.E, (0.402 * sl))) + ((((0.659 * Math.pow(Math.E, (0.122 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit10":
					sl = this.player.returnSkillLevelBySkillName("dzj");
					_loc7_ = ((30.664 * Math.pow(Math.E, (0.402 * sl))) + ((((0.691 * Math.pow(Math.E, (0.134 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit10Arrow":
					sl = this.player.returnSkillLevelBySkillName("dzj");
					_loc7_ = ((55.664 * Math.pow(Math.E, (0.402 * sl))) + ((((2.406 * Math.pow(Math.E, (0.138 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit11":
					_loc7_ = 0;
					break;
				case "hit12":
					sl = this.player.returnSkillLevelBySkillName("mmw");
					_loc7_ = ((30.664 * Math.pow(Math.E, (0.402 * sl))) + ((((0.906 * Math.pow(Math.E, (0.124 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "hit12Arrow":
					sl = this.player.returnSkillLevelBySkillName("mmw");
					_loc7_ = ((22.892 * Math.pow(Math.E, (0.379 * sl))) + ((((0.256 * Math.pow(Math.E, (0.0907 * sl))) * this.getAtk()) * _loc8_) * _loc5_));
					break;
				case "fabao-sword":
					_loc8_ = 1;
					_loc7_ = this.getAtk();
					break;
				case "magicsword2":
					_loc6_ = this.getPlayer().getCurEquipByType("zbfb");
					if (((_loc6_) && (!(_loc6_.getWX().indexOf("木") == -1))))
					{
						_loc7_ = ((0.0875 * this.getAtk()) * _loc6_.getELevel());
					}
					_loc8_ = 1;
					_loc7_ = ((this.getAtk() * _loc6_.getELevel()) * 0.0488);
					break;
				case "fabao-snow":
					_loc6_ = this.getPlayer().getCurEquipByType("zbfb");
					_loc7_ = ((this.getAtk() * _loc6_.getELevel()) * 0.09);
					break;
				case "hitNiumowangSzBuff":
					_loc3_ = 1;
					_loc4_ = this.getPlayer().getCurEquipByType("zbsz");
					if (_loc4_)
					{
						if (_loc4_.equipId == "yxnmwsz")
						{
							_loc3_ = 2;
						}
						else
						{
							if (_loc4_.equipId == "jlnmwsz")
							{
								_loc3_ = 3;
							}
							else
							{
								if (_loc4_.equipId == "ssnmwsz")
								{
									_loc3_ = 4;
								}
							}
						}
					}
					_loc7_ = (((this.getAtk() * _loc8_) * _loc5_) * ((0.131 * _loc3_) * _loc3_));
					break;
				case "hitZhuanlunwangSzBuff":
					_loc3_ = 1;
					_loc4_ = this.getPlayer().getCurEquipByType("zbsz");
					if (_loc4_)
					{
						if (_loc4_.equipId == "yxzlwsz")
						{
							_loc3_ = 2;
						}
						else
						{
							if (_loc4_.equipId == "jlzlwsz")
							{
								_loc3_ = 3;
							}
							else
							{
								if (_loc4_.equipId == "sszlwsz")
								{
									_loc3_ = 4;
								}
							}
						}
					}
					_loc7_ = (((this.getAtk() * _loc8_) * _loc5_) * ((0.131 * _loc3_) * _loc3_));
					break;
				case "hitTiantingZhanshenSzBuff":
					_loc3_ = 1;
					_loc4_ = this.getPlayer().getCurEquipByType("zbsz");
					if (_loc4_)
					{
						if (_loc4_.equipId == "yxttzssz")
						{
							_loc3_ = 2;
						}
						else
						{
							if (_loc4_.equipId == "jlttzssz")
							{
								_loc3_ = 3;
							}
							else
							{
								if (_loc4_.equipId == "ssttzssz")
								{
									_loc3_ = 4;
								}
							}
						}
					}
					_loc7_ = (((this.getAtk() * _loc8_) * _loc5_) * ((0.25 * _loc3_) * _loc3_));
					break;
				case "Pearl":
					_loc6_ = this.getPlayer().getCurEquipByType("zbfb");
					if (((_loc6_) && (!(_loc6_.getWX().indexOf("木") == -1))))
					{
						_loc7_ = (1.2 * this.getAtk());
					}
					_loc8_ = 1;
					_loc7_ = (this.getAtk() * 0.6);
					break;
				case "fabao-pearl":
					_loc6_ = this.getPlayer().getCurEquipByType("zbfb");
					if (((_loc6_) && (!(_loc6_.getWX().indexOf("木") == -1))))
					{
						_loc7_ = ((_loc6_.getELevel() * 0.0473) * this.getAtk());
					}
					_loc8_ = 1;
					_loc7_ = ((_loc6_.getELevel() * 0.0315) * this.getAtk());
					break;
				default:
					_loc7_ = 0;
			}
			return (_loc7_);
		}
		
		override protected function isCannotMoveWhenAttackOnFloor():Boolean
		{
			if (this.isNotArrow)
			{
				return ((((((((((this.curAction == "hit1") || (this.curAction == "hit2")) || (this.curAction == "hit4")) || (this.curAction == "hit5")) || (this.curAction == "hit6")) || (this.curAction == "hit7")) || (this.curAction == "hit9")) || (this.curAction == "hit11")) || (this.curAction == "hit11Frame2")) || (this.curAction == "hit12"));
			}
			return (((((((((((this.curAction == "hit1") || (this.curAction == "hit2")) || (this.curAction == "hit4")) || (this.curAction == "hit5")) || (this.curAction == "hit6")) || (this.curAction == "hit7")) || (this.curAction == "hit9")) || (this.curAction == "hit10")) || (this.curAction == "hit11")) || (this.curAction == "hit11Frame2")) || (this.curAction == "hit12"));
		}
		
		override public function isAttacking():Boolean
		{
			return (this.curAction == "hit1" || this.curAction == "hit2" || this.curAction == "hit3" || this.curAction == "hit4" || this.curAction == "hit5" || this.curAction == "hit6" || this.curAction == "hit7" || this.curAction == "hit8" || this.curAction == "hit9" || this.curAction == "hit10" || this.curAction == "hit11" || this.curAction == "hit11Frame2" || this.curAction == "hit12");
		}
		
		override public function isCanMoveWhenAttack():Boolean
		{
			if (this.isNotArrow)
			{
				return ((this.curAction == "hit10") || (this.curAction == "hit8"));
			}
			return (this.curAction == "hit8");
		}
		
		public function clearBiaoJi():void
		{
			if (this.hit11Biaoji)
			{
				this.hit11Biaoji.destroy();
				this.hit11Biaoji = null;
			}
		}
		
		private function doHit1(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit1");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit1Arrow(param1:uint, param2:Point):void
		{
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit1Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit2(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit2");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit2Arrow(param1:uint, param2:Point):void
		{
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit2Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit3(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet3");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit3");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit4(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit4");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet4");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit4");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit4Arrow(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit4Arrow");
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow4");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit4Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit4ArrowPro(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit4Arrow");
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow4Pro");
			var cf:ColorTransform = new ColorTransform();
			cf.redMultiplier = 0.38;
			cf.blueMultiplier = -0.08;
			cf.greenMultiplier = 0.9;
			_loc3_.transform.colorTransform = cf;
			_loc3_.setScale(2, 1);
			_loc3_.x = param2.x - 90;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit4ArrowPro");
			gc.gameScene.addChild(_loc3_);
			gc.vController.shine(0x00FF00);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit5_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit5");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet5");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit5");
			var _loc4_:int = gc.gameScene.getChildIndex(this);
			gc.gameScene.addChildAt(_loc3_, _loc4_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit5_2(param1:uint, param2:Point, param3:BaseObject):void
		{
			var _loc4_:* = null;
			var _loc5_:*;
			var _loc6_:int = gc.pWorld.likeMonsterArray.indexOf(this.role4Hit5);
			if (((this.role4Hit5) && (!(_loc6_ == -1))))
			{
				this.role4Hit5.destroy();
				gc.pWorld.likeMonsterArray.splice(_loc6_, 1);
				this.role4Hit5 = null;
			}
			for each (_loc5_ in gc.oppositeArray)
			{
				if (_loc5_ == param3)
				{
					_loc4_ = _loc5_;
				}
			}
			if (_loc4_)
			{
				this.role4Hit5 = new VoodooDoll(_loc4_, this);
				this.role4Hit5.x = param2.x;
				this.role4Hit5.y = param2.y;
				gc.gameScene.addChild(this.role4Hit5);
				gc.pWorld.likeMonsterArray.push(this.role4Hit5);
			}
		}
		
		private function doHit6(param1:uint, param2:Point):void
		{
			var target:BaseObject;
			var newObbsiteArray:Array;
			var bo:BaseObject;
			var dis:Number = NaN;
			var moveTime:Number = NaN;
			var direct:uint = param1;
			var p:Point = param2;
			SoundManager.playSound("Role4_hit6");
			var b:SpecialEffectBullet = new SpecialEffectBullet("Role4Bullet6");
			b.x = p.x;
			b.y = p.y;
			b.setRole(this);
			b.setDisable();
			b.setDestroyWhenLastFrame(false);
			b.setDirect(direct);
			b.setAction("hit6");
			gc.gameScene.addChild(b);
			this.magicBulletArray.push(b);
			if (((gc.sid == this.sid) || (gc.isSingleGame())))
			{
				newObbsiteArray = gc.oppositeArray.concat(gc.pWorld.likeMonsterArray);
				for each (bo in newObbsiteArray)
				{
					if (this.bbdc.getDirect() == 0)
					{
						if (bo.x < this.x)
						{
							if (AUtils.GetDisBetweenTwoObj(bo, this) <= 500)
							{
								target = bo;
								break;
							}
						}
					}
					else
					{
						if (bo.x > this.x)
						{
							if (AUtils.GetDisBetweenTwoObj(bo, this) <= 500)
							{
								target = bo;
								break;
							}
						}
					}
				}
				if (target)
				{
					dis = AUtils.GetDisBetweenTwoObj(target, this);
					moveTime = ((dis / 500) * 1.2);
					this.reHit6(b, target, 8, moveTime);
				}
				else
				{
					TweenMax.to(b, 1, {
						"alpha"           : 0,
						"onComplete"      : function (param1:SpecialEffectBullet):*
						{
							param1.destroy();
						},
						"onCompleteParams": [b]
					});
				}
			}
		}
		
		private function reHit6(param1:SpecialEffectBullet, param2:BaseObject, param3:uint, param4:Number):void
		{
			var role4:* = undefined;
			var _b:SpecialEffectBullet = param1;
			var _target:BaseObject = param2;
			var _times:uint = param3;
			var _moveTime:Number = param4;
			role4 = this;
			if (_times > 0)
			{
				SoundManager.playSound("Role4_hit6");
				_times--;
				TweenMax.to(_b, _moveTime, {
					"x"               : _target.x,
					"y"               : _target.y,
					"onComplete"      : function (param1:Role4, param2:SpecialEffectBullet, param3:BaseObject, param4:uint):*
					{
						var _loc5_:* = undefined;
						var _loc6_:* = undefined;
						var _loc7_:* = undefined;
						var _loc8_:* = undefined;
						var _loc9_:* = undefined;
						if (((!(param3.isInvincible())) && (AUtils.GetDisBetweenTwoObj(param2, param3) <= 50)))
						{
							if (param3.curAddEffect)
							{
								param3.curAddEffect.add([{
									"name": BaseAddEffect.POISON_TIMES,
									"time": (gc.frameClips * 7),
									"who" : role4
								}]);
								param3.curAddEffect.add([{
									"name": BaseAddEffect.STUN,
									"time": (gc.frameClips * 2)
								}]);
							}
							_loc5_ = AUtils.getNewObj("HeroBeHurt");
							_loc5_.x = colipse.x;
							_loc5_.y = colipse.y;
							param3.addChild(_loc5_);
							_loc6_ = false;
							_loc7_ = gc.oppositeArray.concat(gc.pWorld.likeMonsterArray);
							for each (_loc8_ in _loc7_)
							{
								if (_loc8_ != param3)
								{
									_loc9_ = AUtils.GetDisBetweenTwoObj(_loc8_, param2);
									if (_loc9_ <= 500)
									{
										_loc6_ = true;
										param1.reHit6(param2, _loc8_, param4, ((_loc9_ / 500) * 1.2));
										break;
									}
								}
							}
							if (!_loc6_)
							{
								param2.destroy();
							}
						}
						else
						{
							param2.destroy();
						}
					},
					"onCompleteParams": [this, _b, _target, _times]
				});
			}
			else
			{
				_b.destroy();
			}
		}
		
		private function otherAttackHit6_2(param1:uint, param2:Point, param3:Array):void
		{
			var b:SpecialEffectBullet;
			b = null;
			var direct:uint = param1;
			var p:Point = param2;
			var targetPointArray:Array = param3;
			b = new SpecialEffectBullet("Role4Bullet6");
			b.x = p.x;
			b.y = p.y;
			b.setRole(this);
			b.setDisable();
			b.setDestroyWhenLastFrame(false);
			b.setDirect(direct);
			b.setAction("hit6");
			gc.gameScene.addChild(b);
			this.magicBulletArray.push(b);
			var targetX:int = parseInt(targetPointArray[0]);
			var targetY:int = parseInt(targetPointArray[1]);
			var moveTime:Number = targetPointArray[2];
			TweenMax.to(b, moveTime, {
				"x"               : targetX,
				"y"               : targetY,
				"onComplete"      : function ():*
				{
					b.destroy();
				},
				"onCompleteParams": [b]
			});
		}
		
		private function doHit7_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit7");
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4Bullet7_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit7_1");
			var _loc4_:int = gc.gameScene.getChildIndex(this);
			gc.gameScene.addChildAt(_loc3_, _loc4_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit7_2(param1:uint, param2:Point):void
		{
			var _loc4_:*;
			for each (var bullet:BaseBullet in this.magicBulletArray)
			{
				if (bullet.getImcName() == "Role4Bullet7_2")
				{
					bullet.destroy();
				}
			}
			_loc4_ = new SpecialEffectBullet("Role4Bullet7_2");
			_loc4_.x = param2.x;
			_loc4_.y = param2.y;
			_loc4_.setRole(this);
			_loc4_.setDirect(param1);
			_loc4_.setAction("hit7");
			gc.gameScene.addChild(_loc4_);
			this.magicBulletArray.push(_loc4_);
			_loc4_ = new SpecialEffectBullet("Role4Bullet7_2");
			if (param1 == 0)
			{
				_loc4_.x = (param2.x - 40);
			}
			else
			{
				_loc4_.x = (param2.x + 40);
			}
			_loc4_.y = (param2.y - 20);
			_loc4_.setRole(this);
			_loc4_.setDirect(param1);
			_loc4_.setAction("hit7");
			gc.gameScene.addChild(_loc4_);
			this.magicBulletArray.push(_loc4_);
			_loc4_ = new SpecialEffectBullet("Role4Bullet7_2");
			if (param1 == 0)
			{
				_loc4_.x = (param2.x + 40);
			}
			else
			{
				_loc4_.x = (param2.x - 40);
			}
			_loc4_.y = (param2.y - 10);
			_loc4_.setRole(this);
			_loc4_.setDirect(param1);
			_loc4_.setAction("hit7");
			gc.gameScene.addChild(_loc4_);
			this.magicBulletArray.push(_loc4_);
		}
		
		private function doHit8(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit8");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet8");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit8");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit8Arrow_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit8Arrow");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow8_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit8");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit8Arrow_2(param1:uint, param2:Point):void
		{
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow8_2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit8Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit9_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit9");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet9_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit9");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit9_2(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4Bullet9_2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit9");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit9Arrow_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit9Arrow");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow9_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit9");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit9Arrow_2(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow9_2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit9Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit10(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit10");
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4Bullet10");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit10");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit10Arrow_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit10Arrow");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow10_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDisable();
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit10");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit10Arrow_2(param1:uint, param2:Point):void
		{
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4BulletArrow10_2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit10Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit11(param1:uint, param2:Point):void
		{
			var _loc3_:int;
			if (!this.hit11Biaoji)
			{
				SoundManager.playSound("Role4_hit11");
				this.hit11Biaoji = new SpecialEffectBullet("Role4Bullet11");
				this.curHit11BiaojiCount = 0;
				this.hit11Biaoji.x = param2.x;
				this.hit11Biaoji.y = param2.y;
				this.hit11Biaoji.setDestroyWhenLastFrame(false);
				this.hit11Biaoji.setDirect(param1);
				this.hit11Biaoji.setDisable();
				_loc3_ = gc.gameScene.getChildIndex(this);
				gc.gameScene.addChildAt(this.hit11Biaoji, _loc3_);
				this.magicBulletArray.push(this.hit11Biaoji);
			}
		}
		
		private function doHit11_2(param1:uint, param2:Point):void
		{
			this.x = this.hit11Biaoji.x;
			this.y = this.hit11Biaoji.y;
			this.speed.y = 0;
		}
		
		private function doHit12(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit12");
			var _loc3_:SpecialEffectBullet = new SpecialEffectBullet("Role4Bullet12");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDestroyWhenLastFrame(false);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit12");
			var _loc4_:int = (gc.frameClips * 4);
			var _loc5_:int = this.getPlayer().returnSkillLevelBySkillName("mmw");
			if (_loc5_ == 10)
			{
				_loc4_ = (_loc4_ * 2);
			}
			_loc3_.setDestroyInCount(_loc4_);
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit12Arrow_1(param1:uint, param2:Point):void
		{
			SoundManager.playSound("Role4_hit12Arrow");
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow12_1");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setDisable();
			_loc3_.setAction("hit12");
			var _loc4_:int = gc.gameScene.getChildIndex(this);
			gc.gameScene.addChildAt(_loc3_, _loc4_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit12Arrow_2(param1:uint, param2:Point):void
		{
			var _loc3_:FollowBaseObjectBullet = new FollowBaseObjectBullet("Role4BulletArrow12_2");
			_loc3_.x = param2.x;
			_loc3_.y = param2.y;
			_loc3_.setRole(this);
			_loc3_.setDirect(param1);
			_loc3_.setAction("hit12Arrow");
			gc.gameScene.addChild(_loc3_);
			this.magicBulletArray.push(_loc3_);
		}
		
		private function doHit12Arrow_3(param1:uint, param2:Point):void
		{
			var _loc4_:int = 0;
			var _loc8_:SpecialEffectBullet;
			var _loc3_:* = null;
			var _loc6_:Number = NaN;
			var _loc7_:int = 10;
			if (this.isGXP)
			{
				_loc7_ = 10;
			}
			while (_loc4_ < _loc7_)
			{
				_loc6_ = ((360 / _loc7_) * _loc4_);
				_loc3_ = new Point((param2.x + (Math.sin(((_loc6_ * Math.PI) / 180)) * 100)), (param2.y - (Math.cos(((_loc6_ * Math.PI) / 180)) * 100)));
				_loc8_ = new SpecialEffectBullet("Role4BulletArrow12_3");
				_loc8_.setRole(this);
				_loc8_.setAction("hit12Arrow");
				if (this.isGXP)
				{
					_loc8_.setScale(1.75, 1.75);
				}
				_loc8_.rotation = _loc6_;
				_loc8_.x = _loc3_.x;
				_loc8_.y = _loc3_.y;
				gc.gameScene.addChild(_loc8_);
				this.magicBulletArray.push(_loc8_);
				_loc4_++;
			}
		}
		
		private function skill_zq(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit4";
			this.setAction("hit4");
			this.hitNum = 0;
			
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_mbyj(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit6";
			this.setAction("hit6");
			
			this.hitNum = 0;
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_wdww(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit5";
			this.setAction("hit5");
			this.hitNum = 0;
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_jdz(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			if (this.isInSky())
			{
				return;
			}
			this.lastHit = "hit7";
			this.setAction("hit7");
			this.hitNum = 0;
			
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_mmw(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (this.isInSky())
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit12";
			this.setAction("hit12");
			this.hitNum = 0;
			
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_mds(param1:uint):void
		{
		}
		
		private function skill_qlj(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit8";
			this.setAction("hit8");
			this.hitNum = 0;
			
			this.roleProperties.setMMP((this.roleProperties.mp - 15));
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_tkj(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit9";
			this.setAction("hit9");
			
			this.hitNum = 0;
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_dcj(param1:uint):void
		{
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			this.lastHit = "hit10";
			this.setAction("hit10");
			
			this.hitNum = 0;
			this.roleProperties.setMMP((this.roleProperties.mp - param1));
		}
		
		private function skill_lvbj(param1:uint):void
		{
			var _loc2_:* = null;
			if (((this.isAttacking()) || (this.isBeAttacking())))
			{
				return;
			}
			if (this.roleProperties.mp < param1)
			{
				return;
			}
			if (!this.hit11Biaoji)
			{
				this.lastHit = "hit11";
				this.setAction("hit11");
				
				this.hitNum = 0;
				this.roleProperties.setMMP((this.roleProperties.mp - param1));
			}
			else
			{
				_loc2_ = this.hit11Biaoji.getBounds(gc.gameScene.parent);
				if (((_loc2_.x < 30) || (_loc2_.x > 930)))
				{
					this.hit11Biaoji.destroy();
					this.hit11Biaoji = null;
				}
				else
				{
					this.doHit11_2(this.getBBDC().getDirect(), new Point());
				}
				this.roleProperties.setMMP((this.roleProperties.mp - (param1 * 0.1)));
			}
		}
		
		private function refreshByWeapon():void
		{
			this.initBBDC();
		}
		
		override public function __keyBoardDown(param1:KeyboardEvent):void
		{
			super.__keyBoardDown(param1);
		}
		
		override public function __keyBoardUp(param1:KeyboardEvent):void
		{
			super.__keyBoardUp(param1);
		}
		
	}
}
*/